Round 419. Div 2 A. Карен и утро

 

Карен готовится к новому школьному дню!

Сейчас время чч:мм по 24-часовому формату. Как вы знаете, Карен любит палиндромы, поэтому ей кажется, что если проснуться в момент времени, являющийся палиндромом, то день будет удачный.

Сколько минимум минут ей нужно еще поспать, чтобы время было палиндромом, когда она проснется?

Напомним, что палиндром это строка, которая читается одинаково слева направо и справа налево. Например, 05:39 – это не палиндром, так как 05:39 справа налево – 93:50. С другой стороны, 05:50 – палиндром, потому что 05:50 справа налево – 05:50.

 

Вход. Единственная строка содержит время в формате чч:мм (00 ≤ мм ≤ 23, 00 ≤ мм ≤ 59).

 

Выход.  Выведите единственное число – минимальное число минут Карен должна поспать, чтобы проснуться в момент времени, являющийся палиндромом.

 

Пример входа 1

3

Пример входа 2

11

Пример входа 3

11

Пример выхода 1

3

Пример выхода 2

0

Пример выхода 3

0

 

 

РЕШЕНИЕ

перебор

 

Анализ алгоритма

Пусть h : m – текущее время. Будем увеличивать время с дискретностью 1 минута пока не получим палиндром (задачу решаем перебором). Когда количество минут дойдет до 60, то сбросим его в 0 и увеличим количество часов на 1. Когда количество часов дойдет до 24, то сбросим его в 0.

Рассмотрим, как проверить является ли время h : m палиндромом. Для этого выделим десятки h1 и единицы h2 часов, а также десятки m1 и единицы m2 минут. Время будет палиндромом, если h1 = m2 и h2 = m1.

 

Реализация алгоритма

 

#include <stdio.h>

 

int h, m, cnt;

 

int pal(int h, int m)

{

  int h1, h2, m1, m2;

  h1 = h / 10; h2 = h % 10;

  m1 = m / 10; m2 = m % 10;

  return (h1 == m2 && h2 == m1);

}

 

int main(void)

{

  scanf("%d:%d",&h,&m);

  cnt = 0;

  while(!pal(h,m))

  {

    m++;

    cnt++;

    if (m == 60)

    {

      h++; m = 0;

    }

    if (h == 24) h = 0;

  }

  printf("%d\n",cnt);

  return 0;

}